<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
//        Array.of(): 将一组值转化成数组的元素，用于解决new Array()方式创建数组导致行为差异问题
//        var arr = new Array(3);     //[,,]
//        var arr = new Array("3");     //["3"]     //当参数只有一个且是Number类型数字，声明的是数组的长度，否则是往数组存入此值

//        let arr = Array.of(3);            //[3]
//        let arr = Array.of("3","d",null);      //["3","d",null]
//        console.log(arr);

//        -----------------------------------------------------------------------
//        Array.from：用来将有length（size）属性的对象转换成数组
//        function show(){
//            let result = 0;
//            let args = Array.from(arguments);
//            args.push(5);
//            for(var i in args){
//                result += args[i];
//            }
//            return result;
//        }
//        alert(show(2,3,4));     //14

//        const obj = {
//            0: 12,
//            1: 13,
//            length: 2
//        };
//
//        const arr = Array.from(obj);
//        console.log(arr);       //[12, 13];
//        console.log([...obj]);      //报错

//        let arr = Array.from([1,2,3], function(val, index){
//            return val * val;
//        });
//        let arr = Array.from([1,2,3], val => val * val);
//        console.log(arr);       //[1,4,9]
//       -----------------------------------------------------------------
//         includes(数组元素，起始位置)：用来判断是否存在数组元素
//        let aNames = ["jj", "james", "wade"];
//        alert(aNames.includes("james"));        //true

//        --------------------------------------------------------------------
//        fill（替换的元素，起始位置，结束位置）:用来修改数组里的元素，方法改变原数组，当第三个参数大于数组长度时候，以最后一位为结束位置。
//        let arr = [1,2,3,4];
//        arr.fill("a", 1, 3);
//        document.writeln(arr);
//        --------------------------------------------------------------------
//        copyWithin(替换起始位置，复制起始位置，复制结束位置)方法接收三个参数，被替换数据的开始处、替换块的开始处、替换块的结束处(不包括)
//        let arr = [1,2,3,4,5,6];
//        arr.copyWithin(1, 3, 5);
//        document.writeln(arr);
    </script>
</head>
<body>
    <script>
//        find:参数为回调函数，回调函数可以接收3个参数，值x、所以i、数组arr，回调函数默认返回值x
//        findIndex和find差不多，不过默认返回的是索引。
//        let aScore = [99,66,55,78,88];
//        let s = aScore.find(function(val, index, arr){
////            console.log(val, index, arr);
//            return val < 60;
//        });
//        let index = aScore.findIndex(function(val, index, arr){
//        //            console.log(val, index, arr);
//            return val < 60;
//        });
//        alert(s);       //55
//        alert(index);       //2
//      -----------------------------------------------------
//        some:返回值是布尔值，只要有一个元素满足条件就返回true
//        every: 返回值是布尔值，每个元素都满足条件就返回true
//        let aScore = [99,66,55,78,88];
//        let bSome = aScore.some(function(val){
//            return val < 60;
//        });
//        let bEvery = aScore.every(function(val){
//            return val > 50;
//        });

//        alert(bSome);      //true
//        alert(bEvery);      //true
//        -------------------------------------------
//        filter:用于过滤满足条件的数组元素
//        let aScore = [99,66,55,78,88,23,64];
//        let arr = aScore.filter(function(val, index){
//            return index % 2;
//        });
//        console.log(arr);
//        -------------------------------------------
//        reduce:数组的迭代器
//        let aScore = [1,2,3,4,5];
//        let sum = aScore.reduce(function(prev, curr, index){  //第一参数是上次迭代的返回值，第二个参数当次的元素，第三个参数当次元素的下标
////            console.log(prev, curr, index);
//            return prev + curr;
//        });
//        alert(sum);     //15

        let arr = [[1,2,3],[4,5,6],[7,8,9]];  //[1,2,3,4,5,6,7,8,9]     //二维数组扁平化

        let aNew = arr.reduce(function(prev, curr){
            return prev.concat(curr);
        });
        document.writeln(aNew);

//        let aScore = [1,2,3,4,5];
//        aScore.reduceRight(function(prev, curr, index){
//            console.log(prev, curr, index);
//        });
    </script>
</body>
</html>